package com.shuda.system.service;

import com.shuda.common.dto.PageDTO;
import com.shuda.common.dto.PageResult;
import com.shuda.system.dto.RoleDTO;
import com.shuda.system.dto.RoleQueryDTO;

import java.util.List;

/**
 * 角色服务接口
 */
public interface RoleService {

    /**
     * 获取角色分页列表
     */
    PageResult<RoleDTO> getRolePage(PageDTO pageDTO, RoleQueryDTO queryDTO);

    /**
     * 根据ID获取角色详情
     */
    RoleDTO getRoleById(Long id);

    /**
     * 创建角色
     */
    Long createRole(RoleDTO roleDTO);

    /**
     * 更新角色
     */
    void updateRole(Long id, RoleDTO roleDTO);

    /**
     * 删除角色
     */
    void deleteRole(Long id);

    /**
     * 批量删除角色
     */
    void batchDeleteRole(List<Long> ids);

    /**
     * 更新角色状态
     */
    void updateRoleStatus(Long id, Integer status);

    /**
     * 获取所有启用的角色列表
     */
    List<RoleDTO> getAllEnabledRoles();

    /**
     * 获取用户角色列表
     */
    List<RoleDTO> getUserRoles(Long userId);

    /**
     * 分配用户角色
     */
    void assignUserRoles(Long userId, List<Long> roleIds);

    /**
     * 获取角色菜单列表
     */
    List<Long> getRoleMenuIds(Long roleId);

    /**
     * 分配角色菜单
     */
    void assignRoleMenus(Long roleId, List<Long> menuIds);
}